package org.example;

// 将类名修改为与文件名匹配的 Fibonacci
public class Dynamic {
    public static void main(String[] args) {
        int n = 10;
        int result = fibonacci(n);
        System.out.println("斐波那契数列的第 " + n + " 项是: " + result);
    }

    /**
     * 计算斐波那契数列的第 n 项
     * 
     * @param n 要计算的项数
     * @return 斐波那契数列的第 n 项
     */
    public static int fibonacci(int n) {
        if (n == 0)
            return 0;
        if (n == 1)
            return 1;

        // 定义状态数组
        int[] dp = new int[n + 1];
        // 初始化状态
        dp[0] = 0;
        dp[1] = 1;

        // 状态转移方程
        for (int i = 2; i <= n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }

        // 返回最终结果
        return dp[n];
    }
}